<?php

class PreguntaFrecuente {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const NOMBRE_ENTIDAD = "PreguntaFrecuente";
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Campos">
  private $_id;
  private $_pregunta;
  private $_respuesta;
  private $_fechaCreacion;
  private $_activo;
  private $_existe;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getId() { return $this->_id; }
  public function setId($value) { $this->_id = $value; }

  public function getPregunta() { return $this->_pregunta; }
  public function setPregunta($value) { $this->_pregunta = $value; }

  public function getRespuesta() { return $this->_respuesta; }
  public function setRespuesta($value) { $this->_respuesta = $value; }

  public function getFechaCreacion() { return $this->_fechaCreacion; }
  public function setFechaCreacion($value) { $this->_fechaCreacion = $value; }

  public function getActivo() { return $this->_activo; }
  public function setActivo($value) { $this->_activo = $value; }

  public function getExiste() { return $this->_existe; }
  public function setExiste($value) { $this->_existe = $value; }
//</editor-fold>
  
//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * constructor
   * @author VSR, 16/05/2011
   */
  public function __construct($id = -1) {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_ObtenerPorId({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = ( is_null($row["Id"]) ) ? -1 : $row["Id"];
        $this->_pregunta = ( is_null($row["Pregunta"]) ) ? "" : $row["Pregunta"];
        $this->_respuesta = ( is_null($row["Respuesta"]) ) ? "" : $row["Respuesta"];
        $this->_fechaCreacion = ( is_null($row["FechaCreacion"]) ) ? "" : $row["FechaCreacion"];
        $this->_activo = ( is_null($row["Activo"]) ) ? 0 : $row["Activo"];
        $this->_existe = ($this->_id == -1) ? 0 : 1;
      } else {
        $this->_id = -1;
        $this->_pregunta = "";
        $this->_respuesta = "";
        $this->_fechaCreacion = "";
        $this->_activo = 0;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * crea o actualiza un registro
   * @author VSR, 16/05/2011
   */
  public function grabar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_Grabar({id},'{pregunta}','{respuesta}','{fechaCreacion}',{activo});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);
      $sp = str_replace("{pregunta}", $this->_pregunta, $sp);
      $sp = str_replace("{respuesta}", $this->_respuesta, $sp);
      $sp = str_replace("{fechaCreacion}", $this->_fechaCreacion, $sp);
      $sp = str_replace("{activo}", $this->_activo, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = $row["Id"];
        $this->_existe = 1;
      } else {
        $this->_id = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * elimina un registro
   * @author VSR, 16/05/2011
   */
  public function eliminar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_Eliminar({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      $this->_id = -1;
      $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * destructor
   * @author VSR, 16/05/2011
   */
  public function  __destruct() {
   // destruye el objeto
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">
  /**
   * obtiene listado de preguntas frecuentes
   * @param <type> $idUsuario
   * @param <type> $filtroPregunta
   * @param <type> $filtroRespuesta
   * @return string
   * @author VSR, 17/05/2011
   */
  public static function obtenerListadoConFiltro($idUsuario, $filtroPregunta, $filtroRespuesta) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_ObtenerListadoConFiltro({idUsuario},'{filtroPregunta}','{filtroRespuesta}');";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);
      $sp = str_replace("{filtroPregunta}", $filtroPregunta, $sp);
      $sp = str_replace("{filtroRespuesta}", $filtroRespuesta, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);

    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  /**
   * elimina una pregunta
   * @param <type> $idPregunta
   * @return <type>
   * @author VSR, 17/05/2011
   */
  public static function eliminarDatos($idPregunta) {
    $retorno = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_EliminarDatos({idPregunta});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idPregunta}", $idPregunta, $sp);

      //ejecuta procedimiento
      $retorno = Bd::exec($sp, Bd::SCALAR, Bd::ORIGEN_DATOS_DEFAULT ,"Status");
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

  /**
   * obtiene detalle de la pregunta consultada
   * @param <type> $idPregunta
   * @return string
   * @author VSR, 17/05/2011
   */
  public static function obtenerDetalle($idPregunta) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_ObtenerDetalle({idPregunta});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idPregunta}", $idPregunta, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  /**
   * graba los datos de una pregunta
   * @param <type> $idPregunta
   * @param <type> $pregunta
   * @param <type> $respuesta
   * @param <type> $activo
   * @return string
   * @author VSR, 17/05/2011
   */
  public static function grabarDatos($idPregunta, $pregunta, $respuesta, $activo) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_GrabarDatos({idPregunta},'{pregunta}','{respuesta}',{activo});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idPregunta}", $idPregunta, $sp);
      $sp = str_replace("{pregunta}", $pregunta, $sp);
      $sp = str_replace("{respuesta}", $respuesta, $sp);
      $sp = str_replace("{activo}", $activo, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  /**
   * obtiene listado de preguntas frecuentes lado cliente
   * @param <type> $idUsuario
   * @param <type> $filtroPregunta
   * @return string
   * @author VSR, 08/06/2011
   */
  public static function obtenerListadoConFiltroCliente($idUsuario, $filtroPregunta) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_ObtenerListadoConFiltroCliente({idUsuario},'{filtroPregunta}');";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);
      $sp = str_replace("{filtroPregunta}", $filtroPregunta, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);

    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  /**
   * Obtiene Listado de preguntas para poder autocompletar la busqueda
   * @param <type> $texto
   * @return string
   */
  public static function autocompletarPregunta($texto) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_PreguntaFrecuente_AutocompletarPregunta('{texto}');";

      //reemplaza marcas por valores reales
      $sp = str_replace("{texto}", $texto, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

//</editor-fold>
}
?>

